package com.gqh.weather.domain.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 年级枚举
 */
@Getter
@AllArgsConstructor
public enum NianjiEnum {

    /**
     * 全部
     */
    ALL(0, "全部", null),

    /**
     * 一年级
     */
    GRADE_1(1, "一年级", "1"),

    /**
     * 二年级
     */
    GRADE_2(2, "二年级", "1"),

    /**
     * 三年级
     */
    GRADE_3(3, "三年级", "1"),

    /**
     * 四年级
     */
    GRADE_4(4, "四年级", "1"),

    /**
     * 五年级
     */
    GRADE_5(5, "五年级", "1"),

    /**
     * 六年级
     */
    GRADE_6(6, "六年级", "1"),

    /**
     * 七年级
     */
    GRADE_7(7, "七年级", "2"),

    /**
     * 八年级
     */
    GRADE_8(8, "八年级", "2"),

    /**
     * 九年级
     */
    GRADE_9(9, "九年级", "2"),

    /**
     * 高一
     */
    GRADE_10(10, "高一", "3"),

    /**
     * 高二
     */
    GRADE_11(11, "高二", "3"),

    /**
     * 高三
     */
    GRADE_12(12, "高三", "3"),

    /**
     * 专一
     */
    GRADE_13(13, "专一", "4"),

    /**
     * 专二
     */
    GRADE_14(14, "专二", "4"),

    /**
     * 专三
     */
    GRADE_15(15, "专三", "4");

    /**
     * 年级值
     */
    private final Integer value;

    /**
     * 年级名称
     */
    private final String description;

    /**
     * 所属学段
     */
    private final String xueduan;

    /**
     * 根据值获取枚举
     *
     * @param value 年级值
     * @return 年级枚举
     */
    public static NianjiEnum fromValue(Integer value) {
        if (value == null) {
            return null;
        }
        for (NianjiEnum item : values()) {
            if (item.getValue().equals(value)) {
                return item;
            }
        }
        return null;
    }

    /**
     * 验证年级值是否有效
     *
     * @param value 年级值
     * @return 是否有效
     */
    public static boolean isValid(Integer value) {
        return fromValue(value) != null;
    }

    /**
     * 获取年级描述
     *
     * @param value 年级值
     * @return 年级描述
     */
    public static String getDescription(Integer value) {
        NianjiEnum item = fromValue(value);
        return item != null ? item.getDescription() : "未知年级";
    }
}
